package com.nageoffer.shortlink.project.dao.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nageoffer.shortlink.project.dao.entity.LinkBrowserStatsDO;
import com.nageoffer.shortlink.project.dto.req.ShortLinkGroupStatsReqDTO;
import com.nageoffer.shortlink.project.dto.req.ShortLinkStatsReqDTO;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.HashMap;
import java.util.List;

/**
 * 短链接数据监控之浏览器持久层
 */
@Mapper
public interface LinkBrowserStatsMapper extends BaseMapper<LinkBrowserStatsDO> {
    /**
     * 记录浏览器访问监控数据
     *
     * @param linkBrowserStatsDO
     */
    @Insert("""
                INSERT INTO t_link_browser_stats (
                    full_short_url,
                    date,
                    cnt,
                    browser,
                    create_time,
                    update_time,
                    del_flag
                ) VALUES (
                    #{linkBrowserStats.fullShortUrl},
                    #{linkBrowserStats.date},
                    #{linkBrowserStats.cnt},
                    #{linkBrowserStats.browser},
                    NOW(),
                    NOW(),
                    0
                ) ON DUPLICATE KEY UPDATE
                    cnt = cnt + #{linkBrowserStats.cnt},
                    update_time = NOW()
            """)
    void linkBrowserStats(@Param("linkBrowserStats") LinkBrowserStatsDO linkBrowserStatsDO);

    /**
     * 获取浏览器访问详情
     *
     * @param requestParam
     * @return
     */
    List<LinkBrowserStatsDO> listBrowserStatsByShortLink(@Param("param") ShortLinkStatsReqDTO requestParam);

    /**
     * 根据分组获取指定日期内浏览器监控数据
     *
     * @param requestParam
     * @return
     */
    List<HashMap<String, Object>> listBrowserStatsByGroup(@Param("param") ShortLinkGroupStatsReqDTO requestParam);

}
